package com.tang.juc.util;

import java.util.concurrent.CountDownLatch;

/**
 * @author tlm
 * @version 1.0
 * @date 2020/3/18 19:08
 * <p>
 * CountDownLatch  可用于计数器
 * 允许一个或多个线程等待直到在其他线程中执行的一组操作完成的同步辅助。
 */
public class CountDownLatchTest {
    public static void main(String[] args) throws InterruptedException {
        //设置计数器总数为5
        CountDownLatch countDownLatch = new CountDownLatch(5);

        for (int i = 1; i <= 5; i++) {
            new Thread(() -> {
                System.out.println(Thread.currentThread().getName() + "出来了");
                countDownLatch.countDown();//计数器-1
            }, String.valueOf(i)).start();
        }
        //计数器归零后，才会向下执行
        countDownLatch.await();

        System.out.println("计数器已执行完毕");

        /*
        输出结果为：
        1出来了
        2出来了
        3出来了
        4出来了
        5出来了
        计数器已执行完毕
         */
    }
}
